package com.spaceapplications.vaadin.addon.eventtimeline.demo;
import java.util.Calendar;
import java.util.Date;
import com.spaceapplications.vaadin.addon.eventtimeline.EventTimeline;
import com.spaceapplications.vaadin.addon.eventtimeline.EventTimeline.EventButtonClickEvent;
import com.spaceapplications.vaadin.addon.eventtimeline.event.BasicEvent;
import com.spaceapplications.vaadin.addon.eventtimeline.event.BasicEventProvider;
import com.spaceapplications.vaadin.addon.eventtimeline.event.TimelineEventProvider;
import com.vaadin.Application;
import com.vaadin.ui.Label;
import com.vaadin.ui.Window;
@SuppressWarnings("serial")
public class MyEventTimelineDemo extends Application {
@Override
public void init() {
Window mainWindow = new Window("EventTimeline Demo Application");
Label label = new Label("Hello Vaadin user");
mainWindow.addComponent(label);
setMainWindow(mainWindow);
// Create the timeline
EventTimeline timeline = new EventTimeline("Our event timeline");
timeline.setHeight("500px");
timeline.setWidth("100%");
Calendar cal = Calendar.getInstance();
Date start = cal.getTime();
cal.add(Calendar.DAY_OF_WEEK, 1);
Date end = cal.getTime();
// Create the data sources
final TimelineEventProvider eventProvider1 = createEventProvider1(end);
final TimelineEventProvider eventProvider2 = createEventProvider2(end);
final TimelineEventProvider eventProvider3 = createEventProvider3(end);
// Add our data sources
timeline.addEventBand("Band 1", eventProvider1);
timeline.addEventBand("Band 2", eventProvider2);
timeline.addEventBand("Band 3", eventProvider3);
timeline.setVisibleDateRange(start, end);
// Add some zoom levels
timeline.addZoomLevel("Hour", 60 * 60 * 1000L);
timeline.addZoomLevel("3Hour", 3 * 60 * 60 * 1000L);
timeline.addZoomLevel("6Hour", 6 * 60 * 60 * 1000L);
timeline.addZoomLevel("12Hour", 12 * 60 * 60 * 1000L);
timeline.addZoomLevel("Day", 86400000L);
//timeline.addZoomLevel("Week", 7 * 86400000L);
// timeline.addZoomLevel("Month", 2629743830L);
mainWindow.addComponent(timeline);
// Listen to click events from events
timeline.addListener(new EventTimeline.EventClickListener() {
public void eventClick(EventButtonClickEvent event) {
getMainWindow().showNotification("clicked event " + event.getItemId());
BasicEvent e = (BasicEvent) eventProvider1.getEvent((String) event.getItemId());
if (e != null) {
e.setCaption("Test");
}
}
});
}
public TimelineEventProvider createEventProvider1(final Date end) {
BasicEventProvider provider = new BasicEventProvider();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, 6);
int idx = 0;
while (cal.getTime().before(end)) {
// Create a point in time
BasicEvent event = new BasicEvent();
event.setEventId(String.valueOf(idx));
// Set the timestamp property
event.setStart(cal.getTime());
cal.add(Calendar.MINUTE, 3);
event.setEnd(cal.getTime());
event.setCaption("Event");
provider.addEvent(event);
if (idx++ % 2 == 0) {
cal.add(Calendar.MINUTE, 5);
event.setStyleName("color1");
} else {
cal.add(Calendar.MINUTE, -2);
event.setStyleName("color2");
}
}
return provider;
}
public TimelineEventProvider createEventProvider2(final Date end) {
BasicEventProvider provider = new BasicEventProvider();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR_OF_DAY, 2);
int idx = 0;
while (cal.getTime().before(end)) {
// Create a point in time
BasicEvent event = new BasicEvent();
event.setEventId(String.valueOf(idx++));
// Set the timestamp property
event.setStart(cal.getTime());
cal.add(Calendar.MINUTE, 10);
event.setEnd(cal.getTime());
event.setCaption("Task");
event.setStyleName("color4");
provider.addEvent(event);
cal.add(Calendar.HOUR, 1);
}
return provider;
}
public TimelineEventProvider createEventProvider3(final Date end) {
BasicEventProvider provider = new BasicEventProvider();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, 6);
int idx = 0;
while (cal.getTime().before(end)) {
// Create a point in time
BasicEvent event = new BasicEvent();
event.setEventId(String.valueOf(idx));
// Set the timestamp property
event.setStart(cal.getTime());
cal.add(Calendar.MINUTE, 30);
event.setEnd(cal.getTime());
event.setCaption("Event");
event.setDescription("Test");
provider.addEvent(event);
idx++;
if (idx % 3 == 0) {
cal.add(Calendar.MINUTE, 30);
event.setStyleName("color3");
} else if (idx % 3 == 1){
cal.add(Calendar.MINUTE, -20);
event.setStyleName("color4");
} else {
cal.add(Calendar.MINUTE, -8);
event.setStyleName("color2");
}
}
return provider;
}
}